﻿@model CustomerProductReviewsModel

@using Nop.Core.Domain.Catalog

@inject Nop.Services.Html.IHtmlFormatter htmlFormatter

@{
    Layout = "_ColumnsTwo";

    //title
    NopHtml.AddTitleParts(T("PageTitle.CustomerProductReviews").Text);
    //page class
    NopHtml.AppendPageCssClassParts("html-account-page");
    NopHtml.AppendPageCssClassParts("html-my-product-reviews-list-page");
}
@section left
{
    @await Component.InvokeAsync(typeof(CustomerNavigationViewComponent), new { selectedTabId = CustomerNavigationEnum.ProductReviews })
}
<div class="page account-page my-product-reviews-list-page">
    <div class="page-title">
        <h1>@T("Account.MyAccount") - @T("Account.CustomerProductReviews")</h1>
    </div>
    <div class="page-body">
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CustomerProductReviewsTop, additionalData = Model })
        @if (Model.ProductReviews.Count > 0)
        {
            foreach (var review in Model.ProductReviews)
            {
                var ratingPercent = review.Rating * 20;
                <div class="product-review-item">
                    <div class="review-item-head">
                        <div class="review-title">
                            <strong>@review.Title</strong>@(!string.IsNullOrEmpty(review.ApprovalStatus) ? $" - {review.ApprovalStatus}" : null)
                        </div>
                        <div class="product-review-box">
                            <div class="rating">
                                <div style="width: @(ratingPercent)%">
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="review-content">
                        <div class="review-text">
                            @Html.Raw(htmlFormatter.FormatText(review.ReviewText, false, true, false, false, false, false))
                        </div>
                        @foreach (var reviewType in review.AdditionalProductReviewList.Where(x => x.Rating > 0))
                        {
                            var ratingExtPercent = reviewType.Rating * 20;
                            <div class="review-type-rating-ext">
                                <div class="review-title">
                                    <i>@reviewType.Name</i>
                                </div>
                                <div class="product-review-box">
                                    <div class="rating">
                                        <div style="width: @(ratingExtPercent)%">
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <br /><br />
                        }
                        <div class="review-info">
                            <span class="user">
                                <label>@T("Account.CustomerProductReviews.ProductReviewFor"):</label>
                                <a href="@(await NopUrl.RouteGenericUrlAsync<Product>(new { SeName = review.ProductSeName })))">@review.ProductName</a>

                            </span>
                            <span class="separator">|</span>
                            <span class="date">
                                <label>@T("Reviews.Date"):</label>
                                <span>@review.WrittenOnStr</span>
                            </span>
                        </div>
                        @if (!string.IsNullOrEmpty(review.ReplyText))
                        {
                            <div class="reply">
                                <div class="reply-header">
                                    @T("Reviews.Reply")
                                </div>
                                <div class="reply-text">
                                    @Html.Raw(htmlFormatter.FormatText(review.ReplyText, false, true, false, false, false, false))
                                </div>
                            </div>
                        }
                    </div>
                </div>
            }
            var pager = await Html.PagerAsync(Model.PagerModel);
            if (!string.IsNullOrEmpty(await pager.RenderHtmlContentAsync()))
            {
                <div class="pager">
                    @pager
                </div>
            }
        }
        else
        {
            <div class="no-data">
                @T("Account.CustomerProductReviews.NoRecords")
            </div>
        }
    </div>
    @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CustomerProductReviewsBottom, additionalData = Model })
</div>